const express = require('express')
const cors = require('cors')
const path = require('path')

// 导入数据库连接池
const pool = require('./src/config/db')

// 导入路由
const routes = require('./src/routes')

const app = express()
const port = process.env.PORT || 3000
// const host = process.env.HOST || 'localhost';
const host = process.env.HOST || '0.0.0.0'

// 中间件
app.use(cors())
app.use(express.json())
app.use(express.urlencoded({ extended: false }))

// 新增缓存控制中间件（在所有路由之前）
app.use((req, res, next) => {
  res.setHeader('Cache-Control', 'no-store, no-cache, must-revalidate')
  res.setHeader('Pragma', 'no-cache')
  res.setHeader('Expires', '0')
  next()
})

// 静态文件服务（保持原有缓存策略）
app.use('/images', express.static(path.join(__dirname, 'public/images')))

// 将连接池添加到请求对象中
app.use((req, res, next) => {
  req.db = pool
  next()
})

// 使用路由
app.use(routes)

// 错误处理中间件
app.use((err, req, res, next) => {
  console.error(err.stack)
  res.status(500).json({
    code: 0,
    msg: '服务器内部错误',
    data: null,
  })
})

// 启动服务器
app.listen(port, host, () => {
  console.log(`菜谱管理API服务器运行在 http://${host}:${port}`)
})

module.exports = app
